package top.zywork.dao;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import top.zywork.dos.AccountDetailDO;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * AccountDetailDAO数据访问接口<br/>
 *
 * 创建于2019-06-28<br/>
 *
 * @author http://zywork.top 王振宇
 * @version 1.0
 */
@Repository
public interface AccountDetailDAO extends BaseDAO {

    @Override
    List<Object> listAllByCondition(@Param("query") Object queryObj);

    @Override
    List<Object> listPageByCondition(@Param("query") Object queryObj);

    @Override
    Long countByCondition(@Param("query") Object queryObj);

    /**
     * 根据类型来统计金额
     * @param userId 用户编号
     * @param subType 收支类型
     * @return
     */
    BigDecimal sumBySubType(@Param("userId") Long userId, @Param("subType") String subType);

    /**
     * 可按时间段统计用户的总佣金
     * @param userId
     * @param beginTime 开始时间
     * @param endTime 结束时间
     * @return
     */
    BigDecimal sumGoodsOrderCommission(Long userId, Date beginTime, Date endTime);

    /**
     * 根据指定的多个条件更新用户账目
     * @param accountDetailDO
     * @return
     */
    int updateByCondition(AccountDetailDO accountDetailDO);
}
